/**
 * 联系客服页面
 * 功能：显示客服二维码，支持长按保存，检查保存状态
 */

const app = getApp()

Page({
  data: {
    // 系统状态栏高度
    statusBarHeight: 44,
    // 二维码保存状态
    isQrCodeSaved: false,
    // 二维码图片路径
    qrCodeImage: '/pages/user/assets/customer-service/qr_code.png',
    // 占位图路径
    qrCodePlaceholder: '/pages/user/assets/customer-service/qr_code.png'
  },

  onLoad(options) {
    console.log('客服页面加载', options)
    
    // 获取系统信息
    this.getSystemInfo()
    
    // 检查用户是否已保存过二维码图片
    this.checkQrCodeSaveStatus()
  },

  onShow() {
    console.log('客服页面显示')
  },

  /**
   * 获取系统信息
   */
  getSystemInfo() {
    const systemInfo = wx.getSystemInfoSync()
    this.setData({
      statusBarHeight: systemInfo.statusBarHeight || 44
    })
  },

  /**
   * 检查二维码保存状态
   */
  checkQrCodeSaveStatus() {
    try {
      const savedStatus = wx.getStorageSync('qr_code_saved')
      if (savedStatus) {
        this.setData({
          isQrCodeSaved: true
        })
        // 如果已保存，显示提示
        wx.showToast({
          title: '已添加',
          icon: 'success',
          duration: 1500
        })
      }
    } catch (error) {
      console.error('检查二维码保存状态失败:', error)
    }
  },

  /**
   * 返回上一页
   * 根据页面来源决定返回逻辑
   */
  onBack() {
    // 获取页面栈信息
    const pages = getCurrentPages()
    const currentPage = pages[pages.length - 1]
    const previousPage = pages[pages.length - 2]
    
    // 如果是从首页跳转来的，返回首页
    if (previousPage && previousPage.route === 'pages/home/index/index') {
      wx.switchTab({
        url: '/pages/home/index/index',
        success: () => {
          console.log('返回首页成功')
        },
        fail: (error) => {
          console.error('返回首页失败:', error)
          // 降级处理：使用navigateBack
          wx.navigateBack()
        }
      })
    } else {
      // 其他情况返回上一页
      wx.navigateBack({
        delta: 1,
        success: () => {
          console.log('返回上一页成功')
        },
        fail: (error) => {
          console.error('返回上一页失败:', error)
          // 降级处理：跳转到首页
          wx.switchTab({
            url: '/pages/home/index/index'
          })
        }
      })
    }
  },

  /**
   * 长按二维码保存图片
   */
  onLongPressQrCode() {
    console.log('长按二维码')
    
    wx.previewImage({
      urls: [this.data.qrCodeImage],
      current: this.data.qrCodeImage,
      success: () => {
        console.log('预览二维码成功')
      },
      fail: (error) => {
        console.error('预览二维码失败:', error)
        this.showSaveImageDialog()
      }
    })
  },

  /**
   * 显示保存图片对话框
   */
  showSaveImageDialog() {
    wx.showModal({
      title: '保存二维码',
      content: '是否保存二维码到相册？',
      confirmText: '保存',
      cancelText: '取消',
      success: (res) => {
        if (res.confirm) {
          this.saveQrCodeImage()
        }
      }
    })
  },

  /**
   * 保存二维码图片到相册
   */
  saveQrCodeImage() {
    wx.showLoading({
      title: '保存中...'
    })

    // 先下载图片
    wx.downloadFile({
      url: this.data.qrCodeImage,
      success: (res) => {
        if (res.statusCode === 200) {
          // 保存到相册
          wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success: () => {
              wx.hideLoading()
              wx.showToast({
                title: '保存成功',
                icon: 'success',
                duration: 2000
              })
              
              // 记录保存状态
              wx.setStorageSync('qr_code_saved', true)
              this.setData({
                isQrCodeSaved: true
              })
              
              // 埋点事件
              this.trackEvent('qr_code_save')
            },
            fail: (error) => {
              wx.hideLoading()
              console.error('保存图片失败:', error)
              
              if (error.errMsg.includes('auth deny')) {
                wx.showModal({
                  title: '提示',
                  content: '需要您授权保存图片到相册',
                  confirmText: '去设置',
                  success: (res) => {
                    if (res.confirm) {
                      wx.openSetting()
                    }
                  }
                })
              } else {
                wx.showToast({
                  title: '保存失败',
                  icon: 'none',
                  duration: 2000
                })
              }
            }
          })
        } else {
          wx.hideLoading()
          wx.showToast({
            title: '图片加载失败',
            icon: 'none'
          })
        }
      },
      fail: (error) => {
        wx.hideLoading()
        console.error('下载图片失败:', error)
        wx.showToast({
          title: '图片加载失败',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 点击主按钮提示
   */
  onClickMainButton() {
    wx.showToast({
      title: '长按保存二维码',
      icon: 'none',
      duration: 2000
    })
  },

  /**
   * 二维码图片加载失败
   */
  onQrCodeImageError() {
    console.error('二维码图片加载失败')
    this.setData({
      qrCodeImage: this.data.qrCodePlaceholder
    })
  },

  /**
   * 埋点事件上报
   */
  trackEvent(eventName, params = {}) {
    try {
      // 这里可以接入具体的埋点SDK
      console.log('埋点事件:', eventName, params)
      
      // 示例：使用微信自带的数据分析
      if (wx.reportAnalytics) {
        wx.reportAnalytics(eventName, params)
      }
    } catch (error) {
      console.error('埋点上报失败:', error)
    }
  },

  /**
   * 分享页面
   */
  onShareAppMessage() {
    return {
      title: '联系客服',
      path: '/pages/user/customer-service/index'
    }
  }
})